신라의 영토팽창은 진흥왕대에 지속적으로 추진되어 560년대에는 신라 역사상 최대의 판도를 누리게 되었다. 신라는 진평왕대에 이르러 실지(失地)의 회복을 꿈꾸는 고구려·백제 양국으로부터 끊임없는 공격을 받았고 선덕여왕 때 그러한 양상은 심화되었다. 638년 고구려의 칠중성 침공도 그러한 외침 가운데 하나였다.
칠중성이 자리 잡고 있는 중성산은 해발 고도 149m에 불과한 야산이지만 전면에 임진강이 흐르고 일대를 한눈에 조망할 수 있으며 수로와 육로가 만나는 요충지였다. 칠중성은 서해안에서 강화도와 김포반도 북쪽을 거쳐 임진강 하구로 들어온 배가 만나는 여울목과 멀지 않은 남쪽에 위치한다. 고구려 군대는 신라를 침공하는데 있어 항상 수심이 얕은 그곳을 이용했다.
638년 10월 고구려군은 신라의 임진강 전선 총사령부인 칠중성을 함락시키기 위해서 임진강을 도하했다. 갑작스런 고구려군의 출현에 백성들은 산골짜기로 흩어졌다. 선덕여왕은 장군 알천에게 칠중성을 지원하라는 명을 내렸고, 알천은 병력을 이끌고 출동하였다. 알천은 칠중성에 들어가 병력을 재정비하였고, 수세적인 농성전에 의존하지 않았다. 그해 11월 알천은 병력을 이끌고 고구려군과 일전을 치르기 위해 성문을 열고 나갔다. 고구려군은 북쪽으로 임진강을 등지고 있었고, 알천의 신라군은 남쪽으로 성벽을 등지는 형국이었다.
전투가 전개되자 예비 병력과 여유 식량을 보유했을 뿐만 아니라 배후에 성을 가진 신라군이 유리했다. 신라군은 싸우다 지치면 휴식을 취하고 병력을 언제든지 교체할 수 있었다. 반면 고구려군은 칠중성 앞에 버티고 있는 신라군을 성으로 몰아넣고, 임진강 도하의 안전한 교두보를 확보해야만 임진강 너머에 있는 마초와 식량과 공성기계를 원활하게 가져 올 수 있었다.
알천은 속전속결의 일전을 준비하는 고구려군에 대해 침착하게 대응하였다. 신라군이 무너지지 않고 버티자 고구려군은 시간이 지날수록 불리했으며 철수를 해야만 했다. 전투에서는 물론 철수과정에서도 고구려군은 많은 사상자를 냈다.『삼국사기(三國史記)』에서 알천이 고구려군과 칠중성 밖에서 싸워 죽이고 사로잡은 사람이 매우 많았다고 기록하고 있을 정도로 신라군은 대승을 거두었다.
칠중성전투는 신라가 고구려에게 적지 않은 피해를 주었고 이후 고구려군의 남침을 저지하는 효과를 거두었다. 한편 칠중성전투는 신라가 대고구려 외교전을 전개하는데 있어서 자신감으로 작용하였다. 642년 백제군에 의해 대야성(大耶城)이 함락된 직후 김춘추(金春秋)가 원병을 청하기 위해 고구려를 방문했다가 오히려 감금되었으나 고구려 국경에 도달한 김유신(金庾信)의 1만 결사대의 응원으로 풀려날 수 있었다. 김춘추가 구출될 수 있었던 것은 고구려가 4년 전 칠중성전투에서 패전한 결과 만만치 않은 군사력을 갖춘 신라와 전쟁을 원치 않았기 때문으로 해석된다.